# -*- coding: utf-8 -*-

from pylot.core import Datum, check_type

class NationOlympique (Datum) :
  """
  Objet représentant une nation dans le cadre des JO.
  Value : type booleen, définit si la nation est représentée
  """
  user_keys = (u'm_or', u'm_argent', u'm_bronze')

  def _setvalue (self, value) :
    Datum._setvalue(self, value)
    # Si la nation n'est plus représentée, on remet le nombre de médailles à 0
    if not self._value :
      self.m_or = 0
      self.m_argent = 0
      self.m_bronze = 0

  def _setm_or (self, m_or) :
    # vérifie que la valeur est de type entier ou vaut None
    check_type(u'm_or', m_or, int, none=True)
    self._m_or = m_or
    if self._m_or > 0 and self.value is False :
      """ La nation a obtenu une médaille, elle est donc représentée"""
      self.value = True

  m_or = property(fget=lambda self: self._m_or,
                  fset=_setm_or,
                  doc=u"Nombre de médailles d'or")

  """
  idem pour argent et bronze
  """


if __name__ == "__main__" :

  fr = NationOlympique(u'fr;bool;False;;;;Europe;France;0;0;0')
  fr.m_or += 1
  assert(fr.value == True)
  assert(fr.toCSV() == u'fr;bool;True;;;;Europe;France;1;0;0')